package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.Role;

import java.util.List;
import java.util.Map;
import java.util.Set;

/*
类简介：

功能：

时间：2020/4/9

*/
public interface RoleDao {

    /**
     * 根据用户id查询角色信息 多表联查
     * @param id
     * @return
     */
    Set<Role> findRolesById(Integer id);

    /**
     * 查询所有角色信息
     * @return 角色信息集合
     */
    List<Role> findAll();

    /**
     * 根据输入条件查询数据
     * @param queryString 用户输入字符串
     * @return 多条页面数据封装Page对象(分页插件提供的一个基类,其中包括一些基本信息)
     */
    Page<Role> selectByCondition(String queryString);

    /**
     * 根据id查询角色信息
     * @param id 角色id
     * @return 角色信息
     */
    Role findById(Integer id);

    /**
     * 通过角色名称查询角色数量
     * @param name 角色名称
     * @return 关键字数量
     */
    Integer findByName(String name);

    /**
     * 通过关键字查询该角色数量
     * @param keyword 关键字
     * @return 关键字存在数量
     */
    Integer findByKeywrod(String keyword);

    /**
     * 新增角色
     * @param role 角色信息
     */
    void add(Role role);

    /**
     * 向中间表添加关联关系
     * @param map 角色id和与之关联的权限id
     */
    void addRoleAndPermission(Map<String, Integer> map);

    /**
     * 删除角色信息
     * @param id 角色id
     */
    void deleteRole(Integer id);

    /**
     * 删除中间表角色关联信息
     * @param id 角色id
     */
    void deleteRoleAndPermission(Integer id);

    /**
     * 通过角色id查询与其关联的权限id
     * @param id 角色id
     * @return 权限id集合
     */
    List<Integer> findPermissionIdsByUserId(Integer id);

    /**
     * 更新角色信息
     * @param role 修改后的角色信息
     */
    void update(Role role);
}
